export const clLimitOrderHookABI = [
  {
    type: 'constructor',
    inputs: [{ name: '_poolManager', type: 'address', internalType: 'contract ICLPoolManager' }],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'EXPIRY_TIME',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'GAS_FEE',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'MAX_EXPIRY_TIME',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'MAX_GAS_FEE',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'MAX_PENDING_ORDER',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'MIN_EXPIRY_TIME',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'PRECISION',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'TAKE_GAS_LIMIT_ERC20',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'TAKE_GAS_LIMIT_NATIVE',
    inputs: [],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  { type: 'function', name: 'acceptOwnership', inputs: [], outputs: [], stateMutability: 'nonpayable' },
  {
    type: 'function',
    name: 'afterAddLiquidity',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      {
        name: 'params',
        type: 'tuple',
        internalType: 'struct ICLPoolManager.ModifyLiquidityParams',
        components: [
          { name: 'tickLower', type: 'int24', internalType: 'int24' },
          { name: 'tickUpper', type: 'int24', internalType: 'int24' },
          { name: 'liquidityDelta', type: 'int256', internalType: 'int256' },
          { name: 'salt', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'delta', type: 'int256', internalType: 'BalanceDelta' },
      { name: 'feesAccrued', type: 'int256', internalType: 'BalanceDelta' },
      { name: 'hookData', type: 'bytes', internalType: 'bytes' },
    ],
    outputs: [
      { name: '', type: 'bytes4', internalType: 'bytes4' },
      { name: '', type: 'int256', internalType: 'BalanceDelta' },
    ],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'afterDonate',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'amount0', type: 'uint256', internalType: 'uint256' },
      { name: 'amount1', type: 'uint256', internalType: 'uint256' },
      { name: 'hookData', type: 'bytes', internalType: 'bytes' },
    ],
    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'afterInitialize',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'sqrtPriceX96', type: 'uint160', internalType: 'uint160' },
      { name: 'tick', type: 'int24', internalType: 'int24' },
    ],
    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'afterRemoveLiquidity',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      {
        name: 'params',
        type: 'tuple',
        internalType: 'struct ICLPoolManager.ModifyLiquidityParams',
        components: [
          { name: 'tickLower', type: 'int24', internalType: 'int24' },
          { name: 'tickUpper', type: 'int24', internalType: 'int24' },
          { name: 'liquidityDelta', type: 'int256', internalType: 'int256' },
          { name: 'salt', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'delta', type: 'int256', internalType: 'BalanceDelta' },
      { name: 'feesAccrued', type: 'int256', internalType: 'BalanceDelta' },
      { name: 'hookData', type: 'bytes', internalType: 'bytes' },
    ],
    outputs: [
      { name: '', type: 'bytes4', internalType: 'bytes4' },
      { name: '', type: 'int256', internalType: 'BalanceDelta' },
    ],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'afterSwap',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      {
        name: 'params',
        type: 'tuple',
        internalType: 'struct ICLPoolManager.SwapParams',
        components: [
          { name: 'zeroForOne', type: 'bool', internalType: 'bool' },
          { name: 'amountSpecified', type: 'int256', internalType: 'int256' },
          { name: 'sqrtPriceLimitX96', type: 'uint160', internalType: 'uint160' },
        ],
      },
      { name: 'delta', type: 'int256', internalType: 'BalanceDelta' },
      { name: 'hookData', type: 'bytes', internalType: 'bytes' },
    ],
    outputs: [
      { name: '', type: 'bytes4', internalType: 'bytes4' },
      { name: '', type: 'int128', internalType: 'int128' },
    ],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'allowedFeeToTickSpacing',
    inputs: [{ name: 'fee', type: 'uint24', internalType: 'uint24' }],
    outputs: [{ name: 'tickSpacing', type: 'int24', internalType: 'int24' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'batchCancelOrderByOperator',
    inputs: [
      {
        name: 'params',
        type: 'tuple[]',
        internalType: 'struct CLLimitOrderHook.BatchParam[]',
        components: [
          { name: 'orderId', type: 'uint232', internalType: 'OrderIdLibrary.OrderId' },
          { name: 'user', type: 'address', internalType: 'address' },
        ],
      },
    ],
    outputs: [
      { name: 'amount0List', type: 'uint256[]', internalType: 'uint256[]' },
      { name: 'amount1List', type: 'uint256[]', internalType: 'uint256[]' },
    ],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'batchWithdrawByOperator',
    inputs: [
      {
        name: 'params',
        type: 'tuple[]',
        internalType: 'struct CLLimitOrderHook.BatchParam[]',
        components: [
          { name: 'orderId', type: 'uint232', internalType: 'OrderIdLibrary.OrderId' },
          { name: 'user', type: 'address', internalType: 'address' },
        ],
      },
    ],
    outputs: [
      { name: 'amount0List', type: 'uint256[]', internalType: 'uint256[]' },
      { name: 'amount1List', type: 'uint256[]', internalType: 'uint256[]' },
    ],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'beforeAddLiquidity',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      {
        name: 'params',
        type: 'tuple',
        internalType: 'struct ICLPoolManager.ModifyLiquidityParams',
        components: [
          { name: 'tickLower', type: 'int24', internalType: 'int24' },
          { name: 'tickUpper', type: 'int24', internalType: 'int24' },
          { name: 'liquidityDelta', type: 'int256', internalType: 'int256' },
          { name: 'salt', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'hookData', type: 'bytes', internalType: 'bytes' },
    ],
    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'beforeDonate',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'amount0', type: 'uint256', internalType: 'uint256' },
      { name: 'amount1', type: 'uint256', internalType: 'uint256' },
      { name: 'hookData', type: 'bytes', internalType: 'bytes' },
    ],
    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'beforeInitialize',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'sqrtPriceX96', type: 'uint160', internalType: 'uint160' },
    ],
    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'beforeRemoveLiquidity',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      {
        name: 'params',
        type: 'tuple',
        internalType: 'struct ICLPoolManager.ModifyLiquidityParams',
        components: [
          { name: 'tickLower', type: 'int24', internalType: 'int24' },
          { name: 'tickUpper', type: 'int24', internalType: 'int24' },
          { name: 'liquidityDelta', type: 'int256', internalType: 'int256' },
          { name: 'salt', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'hookData', type: 'bytes', internalType: 'bytes' },
    ],
    outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'beforeSwap',
    inputs: [
      { name: 'sender', type: 'address', internalType: 'address' },
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      {
        name: 'params',
        type: 'tuple',
        internalType: 'struct ICLPoolManager.SwapParams',
        components: [
          { name: 'zeroForOne', type: 'bool', internalType: 'bool' },
          { name: 'amountSpecified', type: 'int256', internalType: 'int256' },
          { name: 'sqrtPriceLimitX96', type: 'uint160', internalType: 'uint160' },
        ],
      },
      { name: 'hookData', type: 'bytes', internalType: 'bytes' },
    ],
    outputs: [
      { name: '', type: 'bytes4', internalType: 'bytes4' },
      { name: '', type: 'int256', internalType: 'BeforeSwapDelta' },
      { name: '', type: 'uint24', internalType: 'uint24' },
    ],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'cancelOrder',
    inputs: [
      { name: 'orderId', type: 'uint232', internalType: 'OrderIdLibrary.OrderId' },
      { name: 'to', type: 'address', internalType: 'address' },
    ],
    outputs: [
      { name: '', type: 'uint256', internalType: 'uint256' },
      { name: '', type: 'uint256', internalType: 'uint256' },
    ],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'collectGasFee',
    inputs: [{ name: 'to', type: 'address', internalType: 'address' }],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'getHooksRegistrationBitmap',
    inputs: [],
    outputs: [{ name: '', type: 'uint16', internalType: 'uint16' }],
    stateMutability: 'pure',
  },
  {
    type: 'function',
    name: 'getOrderId',
    inputs: [
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'tickLower', type: 'int24', internalType: 'int24' },
      { name: 'zeroForOne', type: 'bool', internalType: 'bool' },
    ],
    outputs: [{ name: '', type: 'uint232', internalType: 'OrderIdLibrary.OrderId' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'getOrderUserInfo',
    inputs: [
      { name: 'orderId', type: 'uint232', internalType: 'OrderIdLibrary.OrderId' },
      { name: 'owner', type: 'address', internalType: 'address' },
    ],
    outputs: [
      {
        name: '',
        type: 'tuple',
        internalType: 'struct CLLimitOrderHook.UserInfo',
        components: [
          { name: 'liquidity', type: 'uint128', internalType: 'uint128' },
          { name: 'rewardDebtOfCurrency0', type: 'uint128', internalType: 'uint128' },
          { name: 'rewardDebtOfCurrency1', type: 'uint128', internalType: 'uint128' },
          { name: 'feeOfCurrency0', type: 'uint128', internalType: 'uint128' },
          { name: 'feeOfCurrency1', type: 'uint128', internalType: 'uint128' },
          { name: 'expiry', type: 'uint48', internalType: 'uint48' },
          { name: 'gasFeeForOperator', type: 'uint72', internalType: 'uint72' },
        ],
      },
    ],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'getPendingFillOrderList',
    inputs: [{ name: 'poolId', type: 'bytes32', internalType: 'PoolId' }],
    outputs: [{ name: '', type: 'uint232[]', internalType: 'OrderIdLibrary.OrderId[]' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'getTickLowerLast',
    inputs: [{ name: 'poolId', type: 'bytes32', internalType: 'PoolId' }],
    outputs: [{ name: '', type: 'int24', internalType: 'int24' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'isOperator',
    inputs: [{ name: '', type: 'address', internalType: 'address' }],
    outputs: [{ name: '', type: 'bool', internalType: 'bool' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'isPoolCreator',
    inputs: [{ name: '', type: 'address', internalType: 'address' }],
    outputs: [{ name: '', type: 'bool', internalType: 'bool' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'lockAcquired',
    inputs: [{ name: 'rawData', type: 'bytes', internalType: 'bytes' }],
    outputs: [{ name: 'returnData', type: 'bytes', internalType: 'bytes' }],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'orderInfos',
    inputs: [{ name: 'orderId', type: 'uint232', internalType: 'OrderIdLibrary.OrderId' }],
    outputs: [
      { name: 'status', type: 'uint8', internalType: 'enum CLLimitOrderHook.OrderStatus' },
      { name: 'liquidityTotal', type: 'uint128', internalType: 'uint128' },
      { name: 'tickLower', type: 'int24', internalType: 'int24' },
      { name: 'zeroForOne', type: 'bool', internalType: 'bool' },
      { name: 'accCurrency0PerLiquidity', type: 'uint256', internalType: 'uint256' },
      { name: 'accCurrency1PerLiquidity', type: 'uint256', internalType: 'uint256' },
      { name: 'poolId', type: 'bytes32', internalType: 'PoolId' },
    ],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'owner',
    inputs: [],
    outputs: [{ name: '', type: 'address', internalType: 'address' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'pendingFillOrderLength',
    inputs: [{ name: '', type: 'bytes32', internalType: 'PoolId' }],
    outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'pendingOwner',
    inputs: [],
    outputs: [{ name: '', type: 'address', internalType: 'address' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'placeOrder',
    inputs: [
      {
        name: 'key',
        type: 'tuple',
        internalType: 'struct PoolKey',
        components: [
          { name: 'currency0', type: 'address', internalType: 'Currency' },
          { name: 'currency1', type: 'address', internalType: 'Currency' },
          { name: 'hooks', type: 'address', internalType: 'contract IHooks' },
          { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },
          { name: 'fee', type: 'uint24', internalType: 'uint24' },
          { name: 'parameters', type: 'bytes32', internalType: 'bytes32' },
        ],
      },
      { name: 'tick', type: 'int24', internalType: 'int24' },
      { name: 'zeroForOne', type: 'bool', internalType: 'bool' },
      { name: 'liquidity', type: 'uint128', internalType: 'uint128' },
    ],
    outputs: [
      { name: 'amount0', type: 'uint256', internalType: 'uint256' },
      { name: 'amount1', type: 'uint256', internalType: 'uint256' },
    ],
    stateMutability: 'payable',
  },
  {
    type: 'function',
    name: 'poolManager',
    inputs: [],
    outputs: [{ name: '', type: 'address', internalType: 'contract ICLPoolManager' }],
    stateMutability: 'view',
  },
  { type: 'function', name: 'renounceOwnership', inputs: [], outputs: [], stateMutability: 'nonpayable' },
  {
    type: 'function',
    name: 'requirePermissionForPoolCreation',
    inputs: [],
    outputs: [{ name: '', type: 'bool', internalType: 'bool' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'setExpiryTime',
    inputs: [{ name: 'expiryTime', type: 'uint256', internalType: 'uint256' }],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'setGasFee',
    inputs: [{ name: 'gasFee', type: 'uint256', internalType: 'uint256' }],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'setMaxPendingOrder',
    inputs: [{ name: 'maxPendingOrder', type: 'uint256', internalType: 'uint256' }],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'setOperator',
    inputs: [
      { name: 'operator', type: 'address', internalType: 'address' },
      { name: 'isOperatorOrNot', type: 'bool', internalType: 'bool' },
    ],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'setPoolCreationPermission',
    inputs: [{ name: 'requirePermission', type: 'bool', internalType: 'bool' }],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'setPoolCreator',
    inputs: [
      { name: 'poolCreator', type: 'address', internalType: 'address' },
      { name: 'isCreator', type: 'bool', internalType: 'bool' },
    ],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'setTakeGasLimitERC20',
    inputs: [{ name: 'gasLimit', type: 'uint256', internalType: 'uint256' }],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'setTakeGasLimitNative',
    inputs: [{ name: 'gasLimit', type: 'uint256', internalType: 'uint256' }],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'setTickSpacingOfFee',
    inputs: [
      { name: 'fee', type: 'uint24', internalType: 'uint24' },
      { name: 'tickSpacing', type: 'int24', internalType: 'int24' },
    ],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'transferOwnership',
    inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    name: 'vault',
    inputs: [],
    outputs: [{ name: '', type: 'address', internalType: 'contract IVault' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    name: 'withdraw',
    inputs: [
      { name: 'orderId', type: 'uint232', internalType: 'OrderIdLibrary.OrderId' },
      { name: 'to', type: 'address', internalType: 'address' },
    ],
    outputs: [
      { name: 'amount0', type: 'uint256', internalType: 'uint256' },
      { name: 'amount1', type: 'uint256', internalType: 'uint256' },
    ],
    stateMutability: 'nonpayable',
  },
  {
    type: 'event',
    name: 'Cancel',
    inputs: [
      { name: 'caller', type: 'address', indexed: true, internalType: 'address' },
      { name: 'owner', type: 'address', indexed: true, internalType: 'address' },
      { name: 'orderId', type: 'uint232', indexed: true, internalType: 'OrderIdLibrary.OrderId' },
      { name: 'liquidity', type: 'uint128', indexed: false, internalType: 'uint128' },
    ],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'ExpiryTimeUpdated',
    inputs: [{ name: 'expiryTime', type: 'uint256', indexed: false, internalType: 'uint256' }],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'Fill',
    inputs: [{ name: 'orderId', type: 'uint232', indexed: true, internalType: 'OrderIdLibrary.OrderId' }],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'GasFeeCollected',
    inputs: [
      { name: 'to', type: 'address', indexed: true, internalType: 'address' },
      { name: 'totalGasFee', type: 'uint256', indexed: false, internalType: 'uint256' },
    ],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'GasFeeUpdated',
    inputs: [{ name: 'gasFeeAmount', type: 'uint256', indexed: false, internalType: 'uint256' }],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'MaxPendingOrderUpdated',
    inputs: [{ name: 'maxPendingOrder', type: 'uint256', indexed: false, internalType: 'uint256' }],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'OperatorUpdated',
    inputs: [
      { name: 'operator', type: 'address', indexed: true, internalType: 'address' },
      { name: 'isOperatorOrNot', type: 'bool', indexed: false, internalType: 'bool' },
    ],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'OwnershipTransferStarted',
    inputs: [
      { name: 'previousOwner', type: 'address', indexed: true, internalType: 'address' },
      { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },
    ],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'OwnershipTransferred',
    inputs: [
      { name: 'previousOwner', type: 'address', indexed: true, internalType: 'address' },
      { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },
    ],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'Pending',
    inputs: [{ name: 'orderId', type: 'uint232', indexed: true, internalType: 'OrderIdLibrary.OrderId' }],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'Place',
    inputs: [
      { name: 'owner', type: 'address', indexed: true, internalType: 'address' },
      { name: 'orderId', type: 'uint232', indexed: true, internalType: 'OrderIdLibrary.OrderId' },
      { name: 'tickLower', type: 'int24', indexed: false, internalType: 'int24' },
      { name: 'zeroForOne', type: 'bool', indexed: false, internalType: 'bool' },
      { name: 'expiry', type: 'uint48', indexed: false, internalType: 'uint48' },
      { name: 'liquidity', type: 'uint128', indexed: false, internalType: 'uint128' },
      { name: 'poolId', type: 'bytes32', indexed: false, internalType: 'PoolId' },
    ],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'PoolCreationPermissionUpdated',
    inputs: [{ name: 'requirePermission', type: 'bool', indexed: false, internalType: 'bool' }],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'PoolCreatorUpdated',
    inputs: [
      { name: 'poolCreator', type: 'address', indexed: true, internalType: 'address' },
      { name: 'isCreator', type: 'bool', indexed: false, internalType: 'bool' },
    ],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'TakeGasLimitERC20Updated',
    inputs: [{ name: 'gasLimit', type: 'uint256', indexed: false, internalType: 'uint256' }],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'TakeGasLimitNativeUpdated',
    inputs: [{ name: 'gasLimit', type: 'uint256', indexed: false, internalType: 'uint256' }],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'TickSpacingOfFeeUpdated',
    inputs: [
      { name: 'fee', type: 'uint24', indexed: true, internalType: 'uint24' },
      { name: 'tickSpacing', type: 'int24', indexed: true, internalType: 'int24' },
    ],
    anonymous: false,
  },
  {
    type: 'event',
    name: 'Withdraw',
    inputs: [
      { name: 'caller', type: 'address', indexed: true, internalType: 'address' },
      { name: 'owner', type: 'address', indexed: true, internalType: 'address' },
      { name: 'orderId', type: 'uint232', indexed: true, internalType: 'OrderIdLibrary.OrderId' },
      { name: 'liquidity', type: 'uint128', indexed: false, internalType: 'uint128' },
    ],
    anonymous: false,
  },
  { type: 'error', name: 'CrossedRange', inputs: [] },
  { type: 'error', name: 'ExceedMaxPendingOrder', inputs: [] },
  { type: 'error', name: 'Filled', inputs: [] },
  { type: 'error', name: 'HookNotImplemented', inputs: [] },
  { type: 'error', name: 'InRange', inputs: [] },
  { type: 'error', name: 'InvalidCallbackType', inputs: [] },
  { type: 'error', name: 'InvalidExpiryTime', inputs: [] },
  { type: 'error', name: 'InvalidFee', inputs: [] },
  { type: 'error', name: 'InvalidGasFeeAmount', inputs: [] },
  { type: 'error', name: 'InvalidLength', inputs: [] },
  { type: 'error', name: 'InvalidNativeAmount', inputs: [] },
  { type: 'error', name: 'InvalidPool', inputs: [] },
  { type: 'error', name: 'InvalidTickSpacing', inputs: [] },
  { type: 'error', name: 'InvalidTickSpacingOfFee', inputs: [] },
  { type: 'error', name: 'LockFailure', inputs: [] },
  { type: 'error', name: 'NoPoolCreationPermission', inputs: [] },
  { type: 'error', name: 'NotFilled', inputs: [] },
  { type: 'error', name: 'NotOperator', inputs: [] },
  { type: 'error', name: 'NotPoolManager', inputs: [] },
  { type: 'error', name: 'NotSelf', inputs: [] },
  { type: 'error', name: 'NotVault', inputs: [] },
  { type: 'error', name: 'OrderNotExpired', inputs: [] },
  {
    type: 'error',
    name: 'OwnableInvalidOwner',
    inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],
  },
  {
    type: 'error',
    name: 'OwnableUnauthorizedAccount',
    inputs: [{ name: 'account', type: 'address', internalType: 'address' }],
  },
  { type: 'error', name: 'ReentrancyGuardReentrantCall', inputs: [] },
  {
    type: 'error',
    name: 'SafeCastOverflowedUintDowncast',
    inputs: [
      { name: 'bits', type: 'uint8', internalType: 'uint8' },
      { name: 'value', type: 'uint256', internalType: 'uint256' },
    ],
  },
  {
    type: 'error',
    name: 'SafeERC20FailedOperation',
    inputs: [{ name: 'token', type: 'address', internalType: 'address' }],
  },
  { type: 'error', name: 'ZeroAddress', inputs: [] },
  { type: 'error', name: 'ZeroLiquidity', inputs: [] },
] as const
